// 父类 基类
class Dog {
  // name 属性 类型
  //   public name: string;

  //   public是默认添加的 公开
  // 自己能用-自类能使用
  //   `private`，私有的，只属于这个类自己，它的类外部和继承它的子类都访问不到。

  static legNum: number = 4;
  public name: string;
  private age: number;
  //   protected` 受保护的，继承它的子类可以访问，外部实例不能访问。
  protected a: string;

  public constructor(name: string) {
    this.name = name;
    this.age;
    this.a;
  }
  run() {
    console.log(this.name + ":run");
  }
}

// 子类
class TaiDi extends Dog {
  constructor(name: string) {
    super(name);
    console.log(this.name);
    // this.age;
    this.a;
  }
  aa() {}

  run(): void {
    console.log("222");
  }
}

class Ao extends Dog {
  constructor(name: string) {
    super(name);
  }
  aa() {}

  run(): void {
    console.log("ao----");
  }
}

let d1 = new Dog("zhangsan");
d1.name;
d1.run();

// d1.age;

// d1.a

let d2 = new TaiDi("xiaohie");
d2.name;
d2.run();
d2.aa();

let d3 = new Ao("aa");
d1.run();

// Dog.legNum
// Ao.legNum
